package com.wang.aopdemo.service.impl;

import com.wang.aopdemo.domain.User;
import com.wang.aopdemo.enums.BanTypeEnum;
import com.wang.aopdemo.service.IUserService;
import org.springframework.stereotype.Service;

/**
 * @author yandong
 */
@Service
public class UserServiceImpl implements IUserService {
    @Override
    public User getUserInfo(String id) {
        // TODO 实际应该从数据库中获取用户信息, 这里只是模拟
        return new User("1", "yandong", BanTypeEnum.MUTE, "2999年1月1日00时");
    }

    @Override
    public void deleteUserInfo() {
        // TODO 实际应该从数据库中删除用户信息
        System.out.println("删除用户信息");
    }

    @Override
    public void banAccount(User user, String banExpireTime) {
        user.setBanType(BanTypeEnum.ACCOUNT_BAN);
        user.setBanExpireTime(banExpireTime);
        if ("2999年1月1日00时".equals(banExpireTime)) {
            // 永久封禁 --> 删除用户信息
            deleteUserInfo();
        } else {
            // 临时封禁 --> 不删除用户信息, 仅隐藏用户信息
            System.out.println("临时封禁");
        }
    }

    @Override
    public void banMute(User user, String banExpireTime) {
        user.setBanType(BanTypeEnum.MUTE);
        user.setBanExpireTime(banExpireTime);
    }

    @Override
    public void banTraffic(User user) {
        user.setBanType(BanTypeEnum.TRAFFIC_LIMIT);
        System.out.println("限流");
    }
}
